import java.util.Observable;
import java.util.Observer;

// 消息发布者
class Publisher extends Observable {
	void publishMessage(String message) {
		setChanged();
		notifyObservers(message);
	}
}

// 消息订阅者
class Subscriber implements Observer {
	private String name;

	Subscriber(String name) {
		this.name = name;
	}

	@Override
	public void update(Observable o, Object arg) {
		System.out.println(name + " received: " + arg);
	}
}

public class Main2 {
	public static void main(String[] args) {
		Publisher publisher = new Publisher();

		Subscriber subscriber1 = new Subscriber("Subscriber 1");
		Subscriber subscriber2 = new Subscriber("Subscriber 2");

		publisher.addObserver(subscriber1);
		publisher.addObserver(subscriber2);

		publisher.publishMessage("Hello, World!");
	}
}
//这是一个简单的Java实现的发布/订阅模式的消息中间件的例子。这个例子使用了Java的内置观察者模式。
//在这个例子中，我们创建了一个Publisher类和一个Subscriber类。Publisher类继承了Observable类，它是Java内置的被观察者类。我们在Publisher类中定义了一个publishMessage方法，当调用这个方法时，它会通知所有的观察者（也就是订阅者）。在publishMessage方法中，我们调用了setChanged方法来标记状态已经改变，然后调用notifyObservers方法来通知所有的观察者。
//Subscriber类实现了Observer接口，它是Java内置的观察者接口。我们在Subscriber类中定义了一个update方法，当Publisher发布消息时，这个方法会被调用。
//在main方法中，我们创建了一个Publisher对象和两个Subscriber对象，并将这两个Subscriber对象添加到Publisher对象的观察者列表中。然后，我们调用Publisher对象的publishMessage方法发布一条消息，这条消息会被所有的订阅者接收到。
//这只是一个非常基础的实现，真实的消息中间件如RabbitMQ会有更复杂的特性，如消息持久化、消息确认、交换机、队列、路由等。如果你想要实现一个功能更完整的消息中间件，你可能需要学习更多关于消息中间件的知识，并且需要更多的编程经验。希望这个例子能对你有所帮助！